Method and apparatus for controlling the position of an electric motor

ABSTRACT

A method is provided for controlling a position of an electric dc brush motor ( 22, 24 ) including the steps of supplying drive current ( 104 ) to drive the electric motor and calculating ( 70, 108 ) a coast constant for the motor. Current through the motor is monitored ( 80 ) and motor speed ( 66 ) is determined in response to monitored motor current. Electrical current to the motor is interrupted ( 50 ) in response to the calculated coast constant ( 70, 106 ) and motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor ( 22, 24 ).

RELATED APPLICATION

This application claims priority from U.S. Provisional Patent Application Ser. No. 61/097,367, filed Sep. 16, 2008, the subject matter of which is incorporated herein by reference in its entirety.

FIELD OF THE INVENTION

The present invention is directed to electric motors and is more particularly directed to a method and apparatus for controlling the position of an electric motor.

BACKGROUND OF THE INVENTION

Electric motors are often used to drive a work piece. When the motor is stopped, there is a chance that a contact brush of the motor will land very near the boundary between one of the motor's commutator segments. Typically, a count of drive pulse signals applied to the motor is used to determine the motor position and, in turn, the position of the work piece. If the motor contact brush is between commutator segments, the count of the next drive pulse provided to drive the motor may not be accurate in determining motor position. If a drive is inaccurate because of a near brush/boundary condition, the resulting position count will be off by one for that drive. The count errors can accumulate over time which will cause inaccuracy in positioning of the work piece.

SUMMARY OF THE INVENTION

This invention uses the known characteristics of the motor to predict how far the motor will coast when turned off. In accordance with the present invention, the motor is turned off at a time that will result in the motor stopping with a commutator brush near the middle of a commutator segment, thus avoiding the segment brush/boundary problem that could possibly result in an inaccuracy of a position determination.

In accordance with one example embodiment of the present invention, a method is provided for controlling a position of an electric dc brush motor including the steps of supplying drive current to drive the electric motor and calculating a coast constant for the motor. Current through the motor is monitored and motor speed is determined in response to monitored motor current. Electrical current to the motor is interrupted in response to the calculated coast constant and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor.

In accordance with another example embodiment of the present invention, an apparatus is provided for controlling a position of an electric dc brush motor comprising an electrical supply source for supplying drive current to drive the electric motor and means for calculating a coast constant for the motor. A current monitor monitors current through the motor and means determines motor speed in response to monitored motor current. An interrupter interrupts the electrical current to the motor in response to the calculated coast constant, and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other features and advantages of the present invention will become apparent to those skilled in the art to which the present invention relates upon reading the following description with reference to the accompanying drawings, in which:

FIG. 1 is a schematic block diagram of a motor drive circuit having a precision motor stop feature in accordance with one example embodiment of the present invention; and

FIG. 2 is a flow diagram of the precision motor stop control process in accordance with one example embodiment of the present invention.

DETAILED DESCRIPTION

Referring to FIG. 1, a motor drive circuit 10, having a precision motor stop feature, in accordance with one example embodiment of the present invention, is shown. The motor drive circuit 10 includes a drive control 20 coupled to one or more motors 22, 24 through motor drive circuits 26, 28, 30. By way of example, the motors 22, 24 may be used in a vehicle climate control system to control the position of climate control doors 42, 44, respectively, that, in turn, control the air flow into the cabin of the vehicle. The motors 22, 24 can be dc brush-type motors. The armature of the dc motors are connected to actuator members (not shown) through associated gear mechanism (not shown) so that actuation of the motors 22, 24 causes an associated movement of the doors 42, 44, respectively.

The motor drivers 26, 28, 30 may take the form of application specific integrated circuits (“ASICs”) each including field effect transistors (“FETs”) that are associated with each dc motor that are driven by the ASICs. When a dc voltage is supplied to one of the dc motors 22, 24 in a first direction, the motor and its associated door is driven in a first direction. When a dc voltage is supplied to one of the dc motors 22, 24 in a second direction, the motor and its associated door is driven in a second or opposite direction.

A drive control 20 commands the door movement in response to door control inputs 48 and turns off the drive command in response to a drive command signal 50. The various door control inputs 48 to the control 20 may include external temperature, radiant temperature, evaporator temperature, air flow, and/or others. In controlling the positioning the doors 42, 44 to their desired positions, the control 20 provides drive commands for driving the dc motors 22, 24. For example, the control may provide the command to move one door by 256 pulses in one direction. To drive the dc motor, the first associated FET of the ASIC provides a constant dc voltage to the associated dc motor and the second associated FET is connected to ground. The constant dc voltage is supplied to the dc motor continuously so that the armature rotates continuously from its starting position to its ending position, which positions the door to its desired position. To stop rotation of the armature of the dc motor, the first and second associated FETs are connected to the same potential.

As the motors 22, 24 rotate, current pulses are occurring. The current through the motors are sensed by a current sensor 60. Each pulse results from a monitored current discontinuity. Current discontinuities result from a brush of the dc motor moving from one commutator segment to an adjacent commutator segment. For example, when the dc motor includes an armature having three commutator segments and two brushes, one complete rotation of the armature results in six current discontinuities. The current sensor is connected to the dc motor via the first and second associated FETs so that the current sensor still senses current discontinuities even when the first and second FETs are grounded. Thus, the ASIC of the system is constantly monitoring for current discontinuities.

Based on the number of current pulses monitored, the position of the motors, 22, 24, and, in turn, the positions of the doors 42, 44, respectively, are monitored in monitor 64. One skilled in the art will appreciate that the position monitor may be part of control 20 and all may be part of a microcontroller. Once the motors' position are known, the speeds of the motors are known and speed signals 66 are provided. The control 20 also includes software for counting the number of received pulses and for determining the actual position of the doors 42, 44 from the determined count. The control 20 includes a non-volatile memory in which position information of the doors are stored.

It is necessary to predict the coast of the motor. The position of the damper doors, i.e., the rotary position of the motor output shaft, is determined by counting drive pulses and referencing from an initial zero position of the motor and knowing the angle of movement of the drive shaft of the motor corresponding to each drive pulse received. However, a position error can occur when determining the motor position due to uncertainty at the end of the drive, i.e., when the drive signal is turned off and motor coast occurs. This occurs due to inertia coasting of the motor due to the motor itself and inertia of the system. Also, the commutator brush can stop between two commutator segment locations so that the first drive pulse applied at startup is counted but does not result in actual movement of the motor. Also, a final pulse applied to a motor may be missed if the current is too low for detection when the motor coasts to a stop. Also, the motor may back up due to cogging forces and the back-up pulse be counted as another forward pulse. These errors are avoided by the present invention by stopping the motor brushes midway between segment boundaries, i.e., making sure the brush is in the middle of a commutator contact. The prediction process and turnoff calculation are shown as elements 70, 72. The result is the turn off command 50 at the correct time to place the brush in the middle of the commutator segment. The relevant equations for the motor are:

T=K·i

E=K·θ

J·θ″+b·θ′=K·I   (1)

$\begin{matrix} {{{L\frac{}{t}i} + {R \cdot i}} = {V - {K \cdot \theta^{\prime}}}} & (2) \end{matrix}$

Where:

-   -   T—torque     -   E—back-emf of motor     -   K—electromotive force constant     -   i—motor current     -   b—damping ratio     -   R—electrical resistance     -   J—inertia     -   L—inductance     -   V—applied voltage     -   θ—position of the output shaft     -   θ′—motor speed     -   θ″—motor acceleration         What we want to know is for any given i, how large is θ from         when the applied voltage is removed to when it stops (θ′=θ″=0).         Stated differently:

${\lim\limits_{t\rightarrow\infty}{{\theta (t)}\mspace{14mu} V}} = \left| \begin{matrix} V_{ign} & {{{if}\mspace{14mu} t} < 0} \\ 0 & {otherwise} \end{matrix} \right.$ J ⋅ θ^(″) + b ⋅ θ^(′) = K ⋅ I  (1) ${{{L \cdot \frac{}{t}}i} + {R \cdot i}} = {V - {{K \cdot \theta^{\prime}}\mspace{14mu} (2)}}$ Laplace(θ^(″)) = (s²)Θ(s) − s ⋅ θ(t₀) − θ^(′)(t₀)

Calculate the Laplace transforms of the differentials.

laplace(θ′)=s·Θ(s)−θ(t ₀)

laplace(i′)=s·I(s)−i(t ₀)

i(t ₀):=i ₀ Initial current at turn off

θ(t ₀):=0 Initial position set to zero

θ′(t ₀):=ω₀ Initial speed at turn off

So the Laplace transforms become:

laplace(θ″)=(s ²)Θ(s)−ω₀

laplace(θ′)=s·Θ(s)

laplace(i′)=s·I(s)−i ₀

Change variables so MathCAD can handle the symbolic math:

I=I(s) Laplace (θ″)=(s ²)Q−ω ₀

Laplace (θ′)=s·Q

Q=Θ(s) Laplace (I′)=s·I−i ₀

Take the Laplace transform of equation 1.

J·Laplace (θ″)+b·Laplace (θ′)=K·I(s)

J·[(s ²)·Q·ω₀ ]+b·(s·Q)=K·I

Take the Laplace transform of equation 2.

L·laplace (i′)+R·I(s)=V−K·laplace (θ′)

If V is zero when motor is turned off, we can expand the rest.

L·laplace (i′)+R·I(s)=−K·laplace (θ′)

L·(s·I−i ₀)+R·I=−K·(s·Q)

Solving both equations 3 and 4 for I and setting them equal to each other.

$\frac{- \left( {{{- L} \cdot i_{0}} + {K \cdot s \cdot Q}} \right)}{{L \cdot s} + R} = \frac{{J \cdot s^{2} \cdot Q} - {J \cdot \omega_{0}} + {b \cdot s \cdot Q}}{K}$

We solve for θ (s) {Q}.

$Q = \frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot L \cdot s} + {J \cdot \omega_{0} \cdot R}}{s \cdot \left( {K^{2} + {J \cdot s^{2} \cdot L} + {J \cdot s \cdot R} + {b \cdot L \cdot s} + {b \cdot R}} \right)}$

Factoring and solving using partial fractions.

$\frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot L \cdot s} + {J \cdot \omega_{0} \cdot R}}{s \cdot \left( {K^{2} + {J \cdot s^{2} \cdot L} + {J \cdot s \cdot R} + {b \cdot L \cdot s} + {b \cdot R}} \right)}$

Partial fraction expansion:

$\frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot R}}{\left( {K^{2} + {b \cdot R}} \right) \cdot s} - \frac{\begin{matrix} {{J \cdot R \cdot L \cdot i_{0} \cdot K} + {J^{2} \cdot R^{2} \cdot \omega_{0}} + {b \cdot L^{2} \cdot i_{0} \cdot K} -} \\ {{J \cdot \omega_{0} \cdot L \cdot K^{2}} + {s \cdot J \cdot L^{2} \cdot i_{0} \cdot K} + {s \cdot J^{2} \cdot L \cdot \omega_{0} \cdot R}} \end{matrix}}{\left( {K^{2} + {b \cdot R}} \right) \cdot \begin{pmatrix} {K^{2} + {J \cdot s^{2} \cdot L} + {J \cdot s \cdot R} +} \\ {{b \cdot L \cdot s} + {b \cdot R}} \end{pmatrix}}$

Take the inverse Laplace transform we get the solution for position.

$\frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot R}}{\left( {K^{2} + {b \cdot R}} \right) \cdot s}\left. \begin{matrix} {{invlaplace},s} \\ t \end{matrix}\rightarrow{\frac{{J \cdot R \cdot \omega_{0}} + {K \cdot L \cdot i_{0}}}{K^{2} + {R \cdot b}}{\mspace{14mu} \mspace{14mu}}\begin{matrix} {{For}\mspace{14mu} {the}} \\ {{first}\mspace{14mu} {term}} \end{matrix}} \right.$ ${\frac{\begin{matrix} {{L \cdot i_{0} \cdot K} +} \\ {J \cdot \omega_{0} \cdot R} \end{matrix}}{\left( {K^{2} + {b \cdot R}} \right) \cdot s} - \frac{\begin{matrix} {{J \cdot R \cdot L \cdot i_{0} \cdot K} + {J^{2} \cdot R^{2} \cdot}} \\ {\omega_{0} + {b \cdot L^{2} \cdot i_{0} \cdot K} -} \\ {{J \cdot \omega_{0} \cdot L \cdot K^{2}} + {s \cdot J \cdot L^{2} \cdot}} \\ {{i_{0} \cdot K} + {s \cdot J^{2} \cdot L \cdot \omega_{0} \cdot R}} \end{matrix}}{\begin{matrix} {\left( {K^{2} + {b \cdot R}} \right) \cdot} \\ \begin{pmatrix} {K^{2} + {J \cdot s^{2} \cdot}} \\ {L + {J \cdot s \cdot R} +} \\ {{b \cdot L \cdot s} + {b \cdot R}} \end{pmatrix} \end{matrix}}}\left. \begin{matrix} {{invlaplace},s} \\ t \end{matrix}\rightarrow{\frac{\begin{matrix} {{J \cdot R \cdot \omega_{0}} +} \\ {K \cdot L \cdot i_{0}} \end{matrix}}{K^{2} + {R \cdot b}} - \frac{\begin{bmatrix} {{\cosh\left( \frac{t \cdot \sqrt{\frac{\begin{matrix} {{J^{2} \cdot R^{2}} - {4 \cdot j \cdot K^{2} \cdot L} -} \\ {2 \cdot J \cdot L \cdot R \cdot b \cdot L^{2} \cdot b^{2}} \end{matrix}}{J^{2} \cdot L^{2}}}}{2} \right)} \cdot} \\ \frac{\begin{matrix} {{\sinh\left( \frac{t \cdot \sqrt{\frac{\begin{matrix} {{J^{2} \cdot R^{2}} - {4 \cdot j \cdot K^{2} \cdot L} -} \\ {2 \cdot J \cdot L \cdot R \cdot b \cdot L^{2} \cdot b^{2}} \end{matrix}}{J^{2} \cdot L^{2}}}}{2} \right)} \cdot} \\ \begin{pmatrix} {{\omega_{0} \cdot J^{2} \cdot R^{2}} - {2 \cdot \omega_{0} \cdot J \cdot}} \\ {{K^{2} \cdot L} + {i_{0} \cdot J \cdot K \cdot L \cdot}} \\ {R - {b \cdot \omega_{0} \cdot J \cdot L \cdot R} +} \\ {b \cdot i_{0} \cdot K \cdot L^{2}} \end{pmatrix} \end{matrix}}{{J \cdot L \cdot \begin{pmatrix} {{J \cdot R \cdot \omega_{0}} +} \\ {L \cdot L \cdot i_{0}} \end{pmatrix}}\sqrt{\frac{\begin{matrix} {{J^{2} \cdot R^{2}} - {4 \cdot J \cdot K^{2} \cdot}} \\ {L - {2 \cdot J \cdot L \cdot R \cdot b} +} \\ {L^{2} \cdot b^{2}} \end{matrix}}{J^{2} \cdot L^{2}}}} \end{bmatrix} \cdot \begin{pmatrix} {{J \cdot R \cdot \omega_{0}} +} \\ {K \cdot L \cdot i_{0}} \end{pmatrix}}{K^{2} + {R \cdot b}}} \right.$

Note that the inverse transform for the second fraction of the equation has an e with a negative exponent in all the terms. So, as we take t to infinity, this goes to zero, effectively removing this term. So the solution becomes:

$\begin{matrix} {\theta_{coast}\frac{{{L \cdot i_{0}}K} + {{J \cdot \omega_{0}}R}}{K^{2} + {b \cdot R}}} & (5) \end{matrix}$

L, K and R are known at design time as soon as the motors to be used are selected. i0 and w0 are measured values at run time. b and J are unknowns and must be calculated or optimized out.

Determination of b

Forces acting on a motor when driving: Applied power External loading (ram air, unit assembly kinematics) Resistance to motion (friction, b)

When the motor is at steady state, the current (i) drawn by the motor is the amount required to overcome the external forces it is experiencing. At a steady state condition, inertia is not a factor. So equation 1 reduces to:

b·θ′=K·i

Motor speed (θ′), current (i) and motor constant (K) are known, so the damping ratio (b) can be calculated.

To determine the value of J, it is assumed that when stopping a motor, energy may be stored in the rotating elements (inertia, J). This inertia is reflected back to the motor, but is reduced by the gear train. So the amount of inertia due to the external system is small compared to the inertia of the motor itself. This is due to the fact that the doors have little mass. J can be characterized for each motor.

The goal is to turn off the motor drive at such a time that the motor will coast to a stop at the exact desired motor position. With equation (5), we have enough information to calculate when to turn the drive off. The choice of time rather than position as the control variable is due to the fact that the motor position is only known at discrete points, i.e. every time a pulse occurs. This may not give enough resolution to be able to accurately achieve the final motor position.

Starting from predetermined position 0 (we want to move to the desired target position+half a pulse (θ_(target)+½ pulse). Every time a pulse is received, the current position (θ_(current)) is known. So the distance still required to move before turning off the drive can be calculated (θ_(tillturnoff)).

θ_(tillturnoff)=0_(target)+θ_(0.5pulse)−θ_(current)−0_(coast)

At steady state:

$\omega = {{\frac{\theta_{tillturnoff}}{t_{tillturnoff}}\mspace{14mu} {and}\mspace{14mu} \omega} = \omega_{0}}$ $t_{tillturnoff} = \frac{\theta_{target} + \theta_{0.5\; {pulse}} - \theta_{current} - \theta_{coast}}{\omega_{0}}$ ${t_{tillturnoff} = \frac{\theta_{target} + \theta_{0.5\; {pulse}} - \theta_{current} - \frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot R}}{K^{2} + {b \cdot R}}}{\omega_{0}}}\mspace{14mu}$ subst  coast

If we assume that Li0K<<<Jw0R, then the equation can be rewritten:

$\mspace{79mu} {t_{tillturnoff} = \frac{\theta_{target} + \theta_{0.5\; {pulse}} - \theta_{current} - \frac{J \cdot \omega_{0} \cdot R}{K^{2} + {b \cdot R}}}{\omega_{0}}}$ $\mspace{79mu} {t_{tillturnoff} = {\frac{\theta_{target} + \theta_{0.5\; {pulse}} - \theta_{current}}{\omega_{0}}\mspace{11mu} - \; {\frac{\frac{J \cdot \omega_{0} \cdot R}{K^{2} + {b \cdot R}}}{\omega_{0}}\mspace{14mu} {distribute}\mspace{14mu} w\; 0}}}$ $t_{tillturnoff} = {\frac{\theta_{target} + \theta_{0.5\; {pulse}} - \theta_{current}}{\omega_{0}}\mspace{11mu} - \; {\frac{J \cdot R}{K^{2} + {b \cdot R}}\mspace{14mu} {simplify}\mspace{14mu} w\; 0\mspace{14mu} {in}\mspace{14mu} {second}\mspace{14mu} {term}}}$

Working with distance in units of pulses, if D is the target number of pulses and P is the current number of pulses traveled, then:

$\begin{matrix} {{t_{tillturnoff} = {\frac{D - 1 + \frac{1}{2} - \left( {P - 1} \right)}{\frac{1}{t_{e} \cdot T}} - \frac{J \cdot R}{K^{2} + {b \cdot R}}}}{{where}\mspace{14mu} w\; 0\mspace{14mu} {is}\mspace{14mu} {{distance}/{time}}\mspace{14mu} {elapsed}\mspace{14mu} {and}}{t_{e}\mspace{14mu} {is}\mspace{14mu} {time}\mspace{14mu} {elapsed}}{{in}\mspace{14mu} {tics}\mspace{14mu} {and}\mspace{14mu} T\mspace{14mu} {is}\mspace{14mu} {sample}\mspace{14mu} {time}}{t_{tillturnoff} = {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e} \cdot T} - \frac{J \cdot R}{K^{2} + {b \cdot R}}}}} & (6) \end{matrix}$

Equation (6) is accurate if b is known, but if it must be calculated, then further calculation is required. This is only valid if at steady state, i.e. θ″=0.

$t_{tillturnoff} = {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e} \cdot T} - \frac{J \cdot R}{K^{2} + {\frac{K \cdot i_{0}}{\frac{\frac{\pi}{3}}{t_{e} \cdot T}} \cdot R}}}$ ${{where}\mspace{14mu} b} = {{\frac{K \cdot i_{0}}{\omega_{0}}\mspace{14mu} {and}\mspace{14mu} \omega_{0}} = \frac{\frac{\pi}{3}}{t_{e} \cdot T}}$ $t_{tillturnoff} = {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e} \cdot T} - \frac{J \cdot R}{K^{2} + {3 \cdot K \cdot \frac{i_{0}}{\pi} \cdot t_{e} \cdot T \cdot R}}}$ simplify  second  term

To make runtime calculations faster, we reduce the number of operations that must be done at runtime by rearranging the equation to minimize runtime multiplies and divides.

$t_{tillturnoff} = {\left\lbrack {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e}} - \frac{J \cdot R}{{K^{2} \cdot T} + {\frac{3}{\pi} \cdot K \cdot i_{0} \cdot t_{e} \cdot T^{2} \cdot R}}} \right\rbrack \cdot T}$ factor  out  T $\frac{t_{tillturnoff}}{T} = \left\lbrack {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e}} - \frac{J \cdot R}{{K^{2} \cdot T} + {\frac{3}{\pi} \cdot K \cdot i_{0} \cdot t_{e} \cdot T^{2} \cdot R}}} \right\rbrack$ put  time  in  tics  instead  of  seconds

Constants are selected that can be pre-calculated.

$B = {{{J \cdot R}\mspace{31mu} C} = {{{K^{2} \cdot T}\mspace{31mu} D} = {\frac{3}{\pi} \cdot K \cdot T^{2} \cdot R}}}$

New equation is:

$\begin{matrix} {\frac{t_{tillturnoff}}{T} = \left\lbrack {{\left( {D + \frac{1}{2} - P} \right) \cdot t_{e}} - \frac{B}{C + {D \cdot i_{0} \cdot t_{e}}}} \right\rbrack} & (7) \end{matrix}$

The above-calculations require knowledge of the coefficients of the motor that can vary over production lots and time. A different method can be used in accordance with the present invention to estimate a combined factor based on the coasting behavior of previous drives.

The total target position equation is:

$\theta_{target} = {{\left( {P_{t} - 1} \right) \cdot \frac{pi}{3}} + \frac{pi}{6}}$ where  P_(t)  is  total  pulses  in  the  drive  pi/3 = 1  pulse  travel ${{{in}\mspace{14mu} {{{radians}\left( {P_{t} - 1} \right)} \cdot \frac{pi}{3}}} + \frac{pi}{6}} = {{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + \theta_{bto} + \theta_{coast}}$ where  θ_(bto)  is  distance  traveled  between  last  driving  pulse  and ${{{{where}\left( {P_{t} - 1} \right)} \cdot \frac{pi}{3}} + \frac{pi}{6}} = {{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + \theta_{bto} + \frac{{L \cdot i_{0} \cdot K} + {J \cdot \omega_{0} \cdot R}}{K^{2} + {b \cdot R}}}$ Subst  eq  5

If we ASSUME that Li0K<<<Jw0R, then the equation can be rewritten:

${{\left( {P_{t} - 1} \right) \cdot \frac{pi}{3}} + \frac{pi}{6}} = {{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + \theta_{bto} + \frac{J \cdot \omega_{0} \cdot R}{K^{2} + {b \cdot R}}}$

If we now assume that the motor constants do not change much from one drive to another and lump them all into one coefficient, C.

$\begin{matrix} {\; {{{{\left( {P_{t} - 1} \right) \cdot \frac{pi}{3}} + \frac{pi}{6}} = {{{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + \theta_{bto} + {C \cdot {\omega_{0}\left( {P_{t} - 1} \right)} \cdot \frac{pi}{3}} + \frac{pi}{6}} = {{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + {t_{bto} \cdot \omega_{0}} + {C \cdot \omega_{0}}}}}{{{subst}\mspace{14mu} \omega_{0}} = \frac{\theta_{bto}}{t_{bto}}}{{{\left( {P_{t} - 1} \right) \cdot \frac{pi}{3}} + \frac{pi}{6}} = {{\left( {P_{current} - 1} \right) \cdot \frac{pi}{3}} + {t_{bto} \cdot \frac{\frac{pi}{3}}{t_{e}}} + {C \cdot \frac{\frac{pi}{3}}{t_{e}}}}}{{{subst}\mspace{14mu} \omega_{0}} = \frac{\frac{pi}{3}}{t_{e}}}{{\left( {P_{t} - 1} \right) \cdot \frac{1}{2}} = {\left( {P_{current} - 1} \right) + {t_{bto} \cdot \frac{1}{t_{e}}} + {C \cdot \frac{1}{t_{e}}}}}{{eliminate}\mspace{14mu} {{pi}/3}}}} & \; \\ {{{\left\lbrack {\left( P_{t} \right) + \frac{1}{2} - \left( P_{current} \right)} \right\rbrack \cdot t_{e}} = {t_{bto} + C}}{{multiply}\mspace{14mu} {by}\mspace{14mu} {1/t_{e}}\mspace{14mu} {and}\mspace{14mu} {simplify}}} & (8) \\ {{t_{bto} = {{\left( {P_{t} + \frac{1}{2} - P_{current}} \right) \cdot t_{e}} - C}}{{Solve}\mspace{14mu} {for}\mspace{14mu} {t_{bto}.{This}}\mspace{14mu} {will}\mspace{14mu} {be}\mspace{14mu} {used}\mspace{14mu} {to}\mspace{14mu} {predict}\mspace{14mu} {when}}{{to}\mspace{14mu} {turn}\mspace{14mu} {off}\mspace{14mu} {the}\mspace{14mu} {{motor}.}}} & (9) \end{matrix}$

To get the value of C, form the equation for an uncontrolled coast.

${C \cdot \omega_{0}} = {\theta_{tfp} + {\left( {P_{coast} - 1} \right) \cdot \frac{pi}{3}} + \theta_{alp}}$ θ_(tfp)  distance  from  turnoff  to  first  coast  pulse θ_(alp)  distance  from  last  coast  pulse  to  actual stopping  point ${C \cdot \omega_{0}} = {\frac{pi}{3} - {\omega_{0} \cdot t_{bto}} + {\left( {P_{coast} - 1} \right) \cdot \frac{pi}{3}} + \theta_{alp}}$ t_(bto)  time  from  last  driving  pulse  to  turn  off $C = \frac{\left\lbrack {\frac{pi}{3} - {\omega_{0} \cdot t_{bto}} + {\left( {P_{coast} - 1} \right) \cdot \frac{pi}{3}} + \theta_{alp}} \right\rbrack}{\omega_{0}}$ $C = {3 \cdot \frac{{\frac{1}{3} \cdot {pi}} - {\frac{1}{3} \cdot \frac{pi}{t_{e}} \cdot t_{bto}} + {\frac{1}{3} \cdot \left( {P_{coast} - 1} \right) \cdot {pi}} + \theta_{alp}}{pi} \cdot t_{e}}$ ${{subst}\mspace{14mu} \omega_{0}} = \frac{\frac{pi}{3}}{t_{e}}$ $C = {t_{e} - t_{bto} + {t_{e} \cdot \left( {P_{coast} - 1} \right)} + \frac{3 \cdot \theta_{alp} \cdot t_{e}}{pi}}$

The last term is the uncertainty in the estimation of C. The range of the last term must be between 0 and 1 pulses, so a min and max for C can be calculated.

$C_{\max} = {t_{e} - t_{bto} + {t_{e} \cdot \left( {P_{coast} - 1} \right)} + {\frac{pi}{3} \cdot \frac{3}{pi} \cdot t_{e}}}$ C_(max) = t_(e) − t_(bto) + t_(e) ⋅ P_(coast) C_(min) = t_(e) − t_(bto) + t_(e) ⋅ (P_(coast) − 1)

Referring to FIG. 2, a control process 100, in accordance with one example embodiment of the present invention, is shown for controlling the position of an electric motor. In step 102, the system is initialized, memories cleared, flags set to initial conditions, etc. In step 104, the drive command is given to the motors 22, 24 based on initial inputs. In step 106, a turn off time is calculated using a coast constant and current speed value so as to have the motor stop with the brushes midway on a contact segment. In step 108, a determination is made as to whether it is time to turn off the drive command. If the determination is negative, the process loops back to step 106. If the determination is positive, the process proceeds to step 109 where the motor is turned off in accordance with the calculated turn off time in step 106. After the motor is turned off, the process proceeds to step 110 where a new coast constant is determined based on the coast travelled and previous determined values. From step 110, the process loops back to step 104 and the process then repeats.

From the above description of the invention, those skilled in the art will perceive improvements, changes and modifications. Such improvements, changes and modifications within the skill of the art are intended to be covered by the appended claims. 

1. A method of controlling a position of an electric dc brush motor comprising the steps of: (a) supplying drive current to drive the electric motor; (b) calculating a coast constant for the motor; (c) monitoring current through the motor; (d) determining motor speed in response to monitored motor current; and (e) interrupting the electrical current to the motor in response to the calculated coast constant, and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor.
 2. The method of claim 1 furthering comprising the steps of determining an initial motor position, counting pulses of the monitored motor current, and determining motor position in response to the counted pulses.
 3. The method of claim 1 wherein said motor is connected to vehicle air diverter doors and wherein said method further includes the step of supplying drive current to the electric motor so as to position the air diverter doors to a desired position.
 4. A method of controlling a position of an electric motor that includes a rotatable motor shaft and that provides signals indicative of the angular position of the motor shaft, said method comprising the steps of: (a) determining inductance, electrical resistance, moment of inertia, and electromotive force constant of the motor; (b) operating the motor to rotate the motor shaft; (c) measuring electrical current applied to the motor and rotational speed of the motor shaft; (d) calculating an angular distance through which the motor shaft will coast after the electrical current is interrupted based on the determined inductance, electrical resistance, moment of inertia, and electromotive force constant of the motor and the measured electrical current applied to the motor and rotational speed of the motor shaft; and (e) interrupting the electrical current at a time based on the calculated angular distance so that a brush of the motor will rest at a location on a commutator segment of the motor and spaced from edges of the commutator segment when the motor shaft stops rotating.
 5. An apparatus for controlling a position of an electric dc brush motor comprising: an electrical supply source for supplying drive current to drive the electric motor; means for calculating a coast constant for the motor; a current monitor for monitoring current through the motor; means for determining motor speed in response to monitored motor current; and an interrupter for interrupting the electrical current to the motor in response to the calculated coast constant, and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor. 